home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 79 / maccd 79.iso / multimedial / GL Tron / Source / gltron / quad.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-05-13  |  1.5 KB  |  62 lines  |  [TEXT/CWIE]

  1. #ifndef QUAD_H
  2. #define QUAD_H
  3.  
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7.  
  8. /* 
  9.    this file holds datastructures for quads
  10.    they can be stored in Quad's and QuadBuffers for later processing
  11.    and rendering
  12. */
  13.  
  14. typedef struct Vertex {
  15.   float v[3];
  16.   float color[4];
  17.   float uv[2];
  18. } Vertex;
  19.  
  20. typedef struct Quad {
  21.   Vertex vertex[4]; 
  22.   int type;
  23.   int texture_id;
  24. } Quad;
  25.  
  26. typedef struct QuadBuffer {
  27.   Quad *quads;
  28.   int size;
  29.   int current;
  30. } QuadBuffer;
  31.  
  32. enum { 
  33.   QUAD_COLOR = 1,
  34.   QUAD_TEXTURE = 2,
  35.   QUAD_TEX_MODULATE = 4,
  36.   QUAD_TEX_DECAL = 8
  37. };
  38.  
  39. /* quad.c */
  40.  
  41. extern void q_setColor4fv( Quad *q, int index, float color[4] );
  42. extern void q_setColor3f( Quad *q, int index, float r, float g, float b);
  43. extern void q_setColor4f( Quad *q, int index, float r, float g, float b, float a);
  44. extern void q_setTexCoord2f( Quad *q, int index, float u, float v );
  45. extern void q_setVertex3f( Quad *q, int index, float x, float y, float z);
  46. extern void q_setType(Quad *q, int type);
  47. extern QuadBuffer* createQuadBuffer(int size);
  48. extern void freeQuadBuffer(QuadBuffer* q );
  49. extern Quad* getNextQuad(QuadBuffer* q);
  50. extern int getCurrentQuad(QuadBuffer* q);
  51. extern int getQuadBufferSize(QuadBuffer *q);
  52. extern void renderQuadAt(QuadBuffer *q, int *index, int i);
  53.  
  54. /* quadbuf.c */
  55. extern int* getSortedQuads(QuadBuffer *q, float eye[3]);
  56. extern Quad* getQuadAt(QuadBuffer *q, int index);
  57.  
  58. /* extern renderer_ lib must provide this */
  59. extern void renderQuad(Quad* q);
  60. #endif
  61.  
  62.